Функция _НаправленияПоискаСтрНайти()
	Возврат Новый Структура("СНачала,СКонца","СНачала","СКонца");
КонецФункции

Функция _СтрНачинаетсяС(Строка, СтрокаПоиска) Экспорт
	Возврат Найти(Строка, СтрокаПоиска) = 1;
КонецФункции

Функция _СтрЗаканчиваетсяНа(Строка, СтрокаПоиска) Экспорт
	Возврат Прав(Строка, СтрДлина(СтрокаПоиска)) = СтрокаПоиска;
КонецФункции

Функция _СтрРазделить(знач Строка, Разделитель, ВключатьПустые = Истина) Экспорт
	Результат = Новый Массив;
	
	Если Строка = "" Тогда 
		Если ВключатьПустые Тогда
			Результат.Добавить(Строка);
		КонецЕсли;
		Возврат Результат;
	КонецЕсли;
	
	Позиция = Найти(Строка, Разделитель);
	Пока Позиция > 0 Цикл
		Подстрока = Лев(Строка, Позиция - 1);
		Если ВключатьПустые ИЛИ НЕ Подстрока = "" Тогда
			Результат.Добавить(Подстрока);
		КонецЕсли;
		Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
		Позиция = Найти(Строка, Разделитель);
	КонецЦикла;
	
	Если ВключатьПустые ИЛИ НЕ Строка = "" Тогда
		Результат.Добавить(Строка);
	КонецЕсли;
	
	Возврат Результат;
КонецФункции

Функция _СтрСоединить(Строки, знач Разделитель = Неопределено) Экспорт
	Результат = "";
	
	Если Разделитель = Неопределено Тогда
		Разделитель = "";
	КонецЕсли;
	
	Если Строки.Количество() Тогда
		Результат = Результат + Строка(Строки[0]);
	КонецЕсли;
	
	Для сч = 1 По Строки.ВГраница() Цикл
		Результат = Результат + Разделитель + Строки[сч];
	КонецЦикла;
	
	Возврат Результат;
КонецФункции

Функция _СтрНайти(Строка, ПодстрокаПоиска, _НаправлениеПоиска = Неопределено, НачальнаяПозиция = Неопределено, НомерВхождения = 1) Экспорт
	// НаправлениеПоиска: СКонца,СНачала. По умолчанию: СНачала
	
	Если Строка = "" и ПодстрокаПоиска = "" Тогда
		// чтобы отрабатывало как в платформе
		Если _НаправлениеПоиска = "СКонца" Тогда
			Если НомерВхождения = 1 Тогда
				Возврат 1;
			Иначе
				Возврат 0;
			КонецЕсли;
		Иначе
			Возврат мин(НомерВхождения, ?(НачальнаяПозиция=Неопределено, 1, НачальнаяПозиция));
		КонецЕсли;
	КонецЕсли;
	
	Если НачальнаяПозиция = Неопределено Тогда
		Если _НаправлениеПоиска = "СКонца" Тогда
			лНачальнаяПозиция = СтрДлина(Строка);
		Иначе
			лНачальнаяПозиция = 1;
		КонецЕсли;
	Иначе
		лНачальнаяПозиция = НачальнаяПозиция;
	КонецЕсли;
	
	Если _НаправлениеПоиска = "СКонца" Тогда
		лСтрока = "";
		Для сч = 1 По СтрДлина(Строка) Цикл
			лСтрока = Сред(Строка, сч, 1) + лСтрока;
		КонецЦикла;
		лПодстрокаПоиска = "";
		Для сч = 1 По СтрДлина(ПодстрокаПоиска) Цикл
			лПодстрокаПоиска = Сред(ПодстрокаПоиска, сч, 1) + лПодстрокаПоиска;
		КонецЦикла;
		лНачальнаяПозиция = макс(1, СтрДлина(Строка)-лНачальнаяПозиция-СтрДлина(ПодстрокаПоиска)+2);
	Иначе
		лСтрока = Строка;
		лПодстрокаПоиска = ПодстрокаПоиска;
		лНачальнаяПозиция = лНачальнаяПозиция;
	КонецЕсли;
	
	лНомерВхождения = 0;
	Результат = Найти(Сред(лСтрока, лНачальнаяПозиция), лПодстрокаПоиска);
	Пока Результат Цикл
		лНачальнаяПозиция = Результат + лНачальнаяПозиция + СтрДлина(ПодстрокаПоиска)-1;
		лНомерВхождения = лНомерВхождения + 1;
		Если лНомерВхождения = НомерВхождения Тогда
			Прервать;
		КонецЕсли;
		Результат = Найти(Сред(лСтрока, лНачальнаяПозиция), лПодстрокаПоиска);
	КонецЦикла;
	
	Если лНомерВхождения = НомерВхождения Тогда
		Результат = лНачальнаяПозиция - СтрДлина(ПодстрокаПоиска);
	Иначе
		Результат = 0;
	КонецЕсли;
	
	Если _НаправлениеПоиска = "СКонца" И Результат<>0 Тогда
		Результат = СтрДлина(Строка) - Результат - СтрДлина(ПодстрокаПоиска) + 2;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

Функция _СтрШаблон(Шаблон, Параметр1=Неопределено, Параметр2=Неопределено, Параметр3=Неопределено,Параметр4=Неопределено,Параметр5=Неопределено,Параметр6=Неопределено,Параметр7=Неопределено,Параметр8=Неопределено,Параметр9=Неопределено,Параметр10=Неопределено) Экспорт
	Результат = Шаблон;
	
	Для сч = -10 По -1 Цикл
		Параметр = Вычислить("Параметр" + (-сч));
		Если Параметр = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		Если Найти(Результат, "%("+(-сч)+")") = 0 И Найти(Результат, "%"+(-сч))=0 Тогда
			ВызватьИсключение "Слишком много фактических параметров";
		КонецЕсли;
		Результат = СтрЗаменить(Результат, "%("+ (-сч) + ")", Параметр);
		Результат = СтрЗаменить(Результат, "%"+ (-сч), Параметр);
	КонецЦикла;
	
	Возврат Результат;
КонецФункции
